Keypad (or keyboard) interfaces are common for computers, handheld devices, processor based systems, and other computing devices. The keypad interface typically provides an interface between the microprocessor and the keypad. The keypad interface (or significant portions thereof) is typically implemented as a program running on a processor to detect key presses, perform keypad scan, perform debounce functions, and other tasks. Such a software based keypad interface may burden the processor with significant processing overhead or require a separate processor to handle such tasks. For example, a keyboard used with the IBM compatible personal computer (PC) typically uses a programmed processor to handle keyboard functions, which interfaces to the main CPU or processor on the motherboard. Typically, every time a key is pressed, the processor is interrupted, which places a significant burden on the processor and may prevent the processor from operating in a low power state for an extended period of time. If there are multiple keys pressed, most systems cannot process the key presses fast enough, or are error prone or simply unable to identify multiple key presses. Furthermore, many such keypad or keyboard interfaces are limited or lack many programmable features.